import NameMark from './nameMark'

// 功法
export default {
  // 功法字段
  fields: {
    name: '',// 名称
    level: 0, // 等级
    state:0, // 是否主修
    levelName:"",// 等级名称
    masteryLevel:0,// 熟练等级
    studyExp:0, // 学习进度
    expSpeedBuff: 0, // 经验速度加成
    hpBuff: 0, // 血量加成
    hotBuff: 0, // 回血速度加成
    lifeBuff: 0, // 寿元加成
    soulBuff: 0, // 灵魂强度加成
    travelSpeedBuff: 0, // 历练速度加成
    levelUpOddsBuff: 0, // 突破概率
  },
  template: [
    {
      level: 0, // 等级
      odds: 500, // 生成权重
      expSpeedBuff: 10, // 经验速度加成
      hpBuff: 10, // 血量加成
      hotBuff: 5, // 回血速度加成
      lifeBuff: 100, // 寿元加成
      soulBuff: 2, // 灵魂强度加成
      travelSpeedBuff: 2, // 历练速度加成
      levelUpOddsBuff: 1, // 突破概率
      minAttr: 1, // 最小词条数
      maxAttr: 2 // 最大词条数
    }, {
      level: 1, // 等级
      odds: 400, // 生成权重
      expSpeedBuff: 100, // 经验速度加成
      hpBuff: 100, // 血量加成
      hotBuff: 25, // 回血速度加成
      lifeBuff: 200, // 寿元加成
      soulBuff: 6, // 灵魂强度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 2, // 突破概率
      minAttr: 1, // 最小词条数
      maxAttr: 3 // 最大词条数
    }, {
      level: 2, // 等级
      odds: 300, // 生成权重
      expSpeedBuff: 1000, // 经验速度加成
      hpBuff: 1000, // 血量加成
      hotBuff: 50, // 回血速度加成
      lifeBuff: 300, // 寿元加成
      soulBuff: 8, // 灵魂强度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 3, // 突破概率
      minAttr: 2, // 最小词条数
      maxAttr: 4 // 最大词条数
    }, {
      level: 3, // 等级
      odds: 100, // 生成权重
      expSpeedBuff: 10000, // 经验速度加成
      hpBuff: 10000, // 血量加成
      hotBuff: 250, // 回血速度加成
      lifeBuff: 400, // 寿元加成
      soulBuff: 10, // 灵魂强度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 4, // 突破概率
      minAttr: 3, // 最小词条数
      maxAttr: 4 // 最大词条数
    }],

  levelName:[
    "凡","灵","仙","神"
  ],
  // 功法熟练度
  masteryLevel:[
    {level: 1,name:"入门",limit:60},
    {level: 2,name:"小成",limit:180},
    {level: 3,name:"大成",limit:300},
    {level: 4,name:"圆满",limit:600},
    {level: 5,name:"化境",limit:10000000},
  ],

  // 生成模版
  __generateSubjectTemplate() {
    let template = this.template;
    let sum = 0;
    template.forEach((v) => {
      sum += v.odds
    });
    let rand = Math.floor(Math.random() * sum);

    let key = 0;
    let tem = 0;

    for (let i = 0; i < template.length; i++) {
      if (rand < template[i].odds + tem) {
        key = i;
        break;
      }
      tem += template[i].odds
    }

    // console.log(key)
    return this.template[key];
  },

  // 生成属性
  __generateSubjectAttr(template) {
    let temSubject = JSON.parse(JSON.stringify(this.fields));
    // let min = template.minAttr;
    // let max = template.maxAttr;
    // let attrRandCount = Math.floor(Math.random() * (max - min + 1)) + min;
    // 必加修炼速度属性
    temSubject.level = template.level;
    // temSubject.expSpeedBuff = template.expSpeedBuff;
    temSubject.levelName = this.levelName[temSubject.level];

    // 单属性属性
    // for (let i = 0; i < attrRandCount ; i++) {
      let rand = Math.floor(Math.random() * 7);
      // console.log(rand)
      switch (rand){
        case 0:
          temSubject.hpBuff = template.hpBuff
          break;
        case 1:
          temSubject.hotBuff = template.hotBuff
          break;
        case 2:
          temSubject.lifeBuff = template.lifeBuff
          break;
        case 3:
          temSubject.soulBuff = template.soulBuff
          break;
        case 4:
          temSubject.travelSpeedBuff = template.travelSpeedBuff
          break;
        case 5:
          temSubject.expSpeedBuff = template.expSpeedBuff;
          break;
        default:
          temSubject.levelUpOddsBuff = template.levelUpOddsBuff
      }
    // }

    return temSubject;
  },

  // 生成功法
  generateSubject() {
    // 生成模版
    let template = this.__generateSubjectTemplate();
    // 生成名称
    let name = NameMark.generateSubjectName();
    // 生成attr

    let subject = this.__generateSubjectAttr(template);
    subject.name = name;

    return subject
  }
}
